﻿using FlyingCircusWebIS.Filtros;
using FlyingCircusWebIS.Models;
using FlyingCircusWebIS.ViewModels.MidiaSocialVM;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace FlyingCircusWebIS.Controllers
{
    [AutenticacaoFilter("A")]
    public class MidiaSocialController : Controller
    {
        private IMidiaSocialService midiaSocialService;

        public MidiaSocialController()
        {
            midiaSocialService = new MidiaSocialService();
        }

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Editar()
        {
            MidiaSocial midiaSocial = midiaSocialService.Ler();
            MidiaSocialEditarVM vm = ConverterEditarVM(midiaSocial);
            return View(vm);
        }


        [HttpPost]
        public ActionResult Editar(MidiaSocialEditarVM vm)
        {
            if (ModelState.IsValid)
            {
                MidiaSocial midiaSocial = ConverterEditarVM(vm);

                var erros = midiaSocialService.ValidaAtualizar(midiaSocial);
                if (erros.Count == 0)
                {
                    midiaSocialService.Atualizar(midiaSocial);
                    return RedirectToAction("Index");
                }
                else
                {
                    ModelState.AddModelErrors(erros);
                }
            }

            return View(vm);
        }


        public ActionResult PublicarFacebook()
        {
            return View();
        }

        [HttpPost]
        public ActionResult PublicarFacebook(MidiaSocialPublicarFacebookVM vm)
        {
            if (ModelState.IsValid)
            {
                MidiaSocial midiaSocial = midiaSocialService.Ler();
                midiaSocial.PostarFacebook(vm.Mensagem);
                return RedirectToAction("Index");
            }

            return View(vm);
        }

        // -----------------------------------------------------------------------------------------
        // Métodos auxiliares 
        // -----------------------------------------------------------------------------------------

        private MidiaSocial ConverterEditarVM(MidiaSocialEditarVM vm)
        {
            MidiaSocial registro = new MidiaSocial();
            registro.NomeApareceEmail = vm.NomeApareceEmail;
            registro.EnderecoEmail = vm.EnderecoEmail;
            registro.HostEmail = vm.HostEmail;
            registro.PortaEmail = vm.PortaHostEmail;
            registro.SenhaEmail = vm.SenhaEmail;
            registro.ConexaoSSLEmail = (vm.ConexaoSSLEmail ? "S" : "N");
            registro.MensagemAtivacaoCadastro = vm.MensagemAtivacaoCadastro;
            registro.AssuntoAtivacaoCadastro = vm.AssuntoMensagemAtivacaoCadastro;
            registro.MensagemCancelamentoReserva = vm.MensagemCancelamentoReserva;
            registro.AssuntoCancelamentoReserva = vm.AssuntoMensagemCancelamentoReserva;
            registro.MensagemConfirmacaoReserva = vm.MensagemConfirmacaoReserva;
            registro.AssuntoMensagemConfirmacaoReserva = vm.AssuntoMensagemConfirmacaoReserva;
            registro.FacebookAppId = vm.FacebookAppId;
            registro.FacebookAppSecret = vm.FacebookAppSecret;
            registro.FacebookAccessToken = vm.FacebookAccessToken;
            registro.FacebookPostUrl = vm.FacebookPostUrl;

            return registro;
        }

        private MidiaSocialEditarVM ConverterEditarVM(MidiaSocial registro)
        {
            MidiaSocialEditarVM vm = new MidiaSocialEditarVM();
            vm.NomeApareceEmail = registro.NomeApareceEmail;
            vm.EnderecoEmail = registro.EnderecoEmail;
            vm.HostEmail = registro.HostEmail;
            vm.PortaHostEmail = registro.PortaEmail;
            vm.SenhaEmail = registro.SenhaEmail;
            vm.ConexaoSSLEmail = registro.ConexaoSSLEmail.Equals("S");
            vm.MensagemAtivacaoCadastro = registro.MensagemAtivacaoCadastro;
            vm.AssuntoMensagemAtivacaoCadastro = registro.AssuntoAtivacaoCadastro;
            vm.MensagemCancelamentoReserva = registro.MensagemCancelamentoReserva;
            vm.AssuntoMensagemCancelamentoReserva = registro.AssuntoCancelamentoReserva;
            vm.AssuntoMensagemConfirmacaoReserva = registro.AssuntoMensagemConfirmacaoReserva;
            vm.MensagemConfirmacaoReserva = registro.MensagemConfirmacaoReserva;
            vm.FacebookAppId = registro.FacebookAppId;
            vm.FacebookAppSecret = registro.FacebookAppSecret;
            vm.FacebookAccessToken = registro.FacebookAccessToken;
            vm.FacebookPostUrl = registro.FacebookPostUrl;

            return vm;
        }

    }
}
